﻿using TalentDesk.Contracts.Ef;
using TalentDesk.Mvc.HelperClasses;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Web;
using System.Web.Mvc;
using System.Web.UI;
using TalentDesk.Contracts.DataContracts;
using TalentDesk.Mvc.Models;
using TalentDesk.Mvc.Controllers;
namespace TalentDesk.Mvc.Controllers
{
    public class CacheEnumController : BaseController
    {
        private static string GetEnumDescription(Type enumType, string key)
        {
            string result = string.Empty;
            if (!string.IsNullOrEmpty(key))
            {
                FieldInfo fi;
                DescriptionAttribute da;
                foreach (var enumValue in Enum.GetValues(enumType))
                {
                    if (Convert.ToInt32(enumValue) == Convert.ToInt32(key))
                    {
                        fi = enumType.GetField((enumValue.ToString()));
                        da = (DescriptionAttribute)Attribute.GetCustomAttribute(fi,
                        typeof(DescriptionAttribute));
                        if (da != null)
                        {
                            result = da.Description;
                        }
                    }
                }
            }

            return result;
        }
        //public ContentResult GetProjectTypes(string key)
        //{
        //    string result = string.Empty;
        //    if (!string.IsNullOrEmpty(key))
        //        result = CacheHelper.GetProjectTypesById(Convert.ToInt32(key)).ProjectType1;
        //    return Content(result);
        //}

      

        //public ContentResult GetSozlesmeTipi(string key)
        //{
        //    return Content(GetEnumDescription(typeof(EnumSozlesmeTipler), key));
        //}

        //public ContentResult GetSayacMarkaAdi(string key)
        //{
        //    string result = string.Empty;
        //    if (!string.IsNullOrEmpty(key))
        //        result = CacheHelper.GetSayacMarkaAdi(Convert.ToInt32(key));
        //    return Content(result);
        //}

        //public ContentResult GetSayacEnerjiOlcumCinsi(string key)
        //{
        //    string result = string.Empty;
        //    if (!string.IsNullOrEmpty(key))
        //        result = CacheHelper.GetSayacEnerjiOlcumCinsi(Convert.ToInt32(key.ToString()));
        //    return Content(result);
        //}

        //public ContentResult GetEnerjiCinsi(string key)
        //{
        //    return Content(GetEnumDescription(typeof(EnumEnerjiOlcumCinsleri), key));
        //}

        //public ContentResult GetPeriod(string key)
        //{
        //    return Content(GetEnumDescription(typeof(EnumPeriod), key));
        //}

        //public ContentResult GetTahakkukEdildimi(string key)
        //{
        //    return Content(GetEnumDescription(typeof(EnumTahakkukEdildimi), key));
        //}

        //public ContentResult GetIsletmeKodu(string key)
        //{
        //    string result = string.Empty;
        //    if (!string.IsNullOrEmpty(key))
        //        result = CacheHelper.GetIsletmeKodu(Convert.ToInt32(key));
        //    return Content(result);
        //}
        //public ContentResult GetEndeksTipi(string key)
        //{
        //    return Content(GetEnumDescription(typeof(EnumEndeksTipi), key));
        //}
        //public ContentResult GetThkTurleri01Aciklama(string key)
        //{
        //    string result = string.Empty;
        //    if (!string.IsNullOrEmpty(key))
        //        result = CacheHelper.GetThkTurleri01Aciklama(Convert.ToInt32(key));
        //    return Content(result);
        //}

        //public ContentResult GetThkTurleri02Aciklama(string key)
        //{
        //    string result = string.Empty;
        //    if (!string.IsNullOrEmpty(key))
        //        result = CacheHelper.GetThkTurleri02Aciklama(Convert.ToInt32(key));
        //    return Content(result);
        //}

        //public ContentResult GetOdendiAciklama(string key)
        //{
        //    return Content(GetEnumDescription(typeof(EnumOdendi), key));
        //}

        //public ContentResult GetThkKalemAciklama(string key)
        //{
        //    string result = string.Empty;
        //    if (!string.IsNullOrEmpty(key))
        //        result = CacheHelper.GetThkKalemAciklama(Convert.ToInt32(key));
        //    return Content(result);
        //}
        //public ContentResult GetTahakkukDurumAciklama(string key)
        //{
        //    return Content(GetEnumDescription(typeof(EnumTahakkukDurumKodlar), key));
        //}

        //public ContentResult GetThsTurleri01Aciklama(string key)
        //{
        //    string result = string.Empty;
        //    if (!string.IsNullOrEmpty(key))
        //        result = CacheHelper.GetThsTurleri01Aciklama(Convert.ToInt32(key));
        //    return Content(result);
        //}

        //public ContentResult GetThsTurleri02Aciklama(string key)
        //{
        //    string result = string.Empty;
        //    if (!string.IsNullOrEmpty(key))
        //        result = CacheHelper.GetThsTurleri02Aciklama(Convert.ToInt32(key));
        //    return Content(result);
        //}
        //public ContentResult GetTahsilatDurumAciklama(string key)
        //{
        //    return Content(GetEnumDescription(typeof(EnumTahsilatDurumKodlar), key));
        //}

        //public ContentResult GetBankaAdi(string key)
        //{
        //    string result = string.Empty;
        //    if (!string.IsNullOrEmpty(key))
        //        result = CacheHelper.GetBankaAdi(key);
        //    return Content(result);
        //}



        //public JsonResult GetIsletmeAdi(string ilKodu, string ilBolgeKodu, string ilceKodu, string kasabaKodu, string koyKodu)
        //{
        //    string result = string.Empty;
        //    if (!string.IsNullOrEmpty(ilKodu) && !string.IsNullOrEmpty(ilBolgeKodu) && !string.IsNullOrEmpty(ilceKodu) && !string.IsNullOrEmpty(kasabaKodu) && !string.IsNullOrEmpty(koyKodu))
        //        result = CacheHelper.GetIsletmeAdi(Convert.ToInt32(ilKodu), Convert.ToInt32(ilBolgeKodu), Convert.ToInt32(ilceKodu), Convert.ToInt32(kasabaKodu), Convert.ToInt32(koyKodu));
        //    return Json(result);
        //}
        //public JsonResult GetIsletmeFrom5(string ilKodu, string ilBolgeKodu, string ilceKodu, string kasabaKodu, string koyKodu)
        //{
        //    Isletmeler result = null;
        //    if (!string.IsNullOrEmpty(ilKodu) && !string.IsNullOrEmpty(ilBolgeKodu) && !string.IsNullOrEmpty(ilceKodu) && !string.IsNullOrEmpty(kasabaKodu) && !string.IsNullOrEmpty(koyKodu))
        //        result = CacheHelper.GetIsletmeFrom5(Convert.ToInt32(ilKodu), Convert.ToInt32(ilBolgeKodu), Convert.ToInt32(ilceKodu), Convert.ToInt32(kasabaKodu), Convert.ToInt32(koyKodu));
        //    if (result == null)
        //        result = new Isletmeler { IsletmeKodu = -1, IsletmeAdi = "Tanımsız" };

        //    return Json(result);
        //}


        //public ContentResult GetKacakDurumAciklama(string key)
        //{
        //    return Content(GetEnumDescription(typeof(EnumKacakKayitDurum), key));
        //}
        //public ContentResult GetKacakTuru(string key)
        //{
        //    string result = string.Empty;
        //    if (!string.IsNullOrEmpty(key))
        //        result = CacheHelper.GetKacakTuru(Convert.ToInt32(key));
        //    return Content(result);
        //}

        //public ContentResult GetAnaAboneGrubu(string key)
        //{
        //    string result = string.Empty;
        //    if (!string.IsNullOrEmpty(key))
        //        result = CacheHelper.GetAnaAboneGrubu(Convert.ToInt32(key));
        //    return Content(result);
        //}

        //public ContentResult GetFizikselDurum(string key)
        //{
        //    string result = string.Empty;
        //    if (!string.IsNullOrEmpty(key))
        //        result = CacheHelper.GetFizikselDurumAciklama(Convert.ToInt32(key));
        //    return Content(result);
        //}

        //public ContentResult GetHareketTipi(string key)
        //{
        //    string result = string.Empty;
        //    if (!string.IsNullOrEmpty(key))
        //        result = CacheHelper.GetHareketTipiAciklama(Convert.ToInt32(key));
        //    return Content(result);
        //}




        //public void ExportCsv()
        //{
        //    if (Session["DataToExport"] == null)
        //        return;

        //    var data = Session["DataToExport"];
        //    var grid = new System.Web.UI.WebControls.GridView();
        //    grid.DataSource = data;
        //    grid.DataBind();
        //    Response.ClearContent();
        //    Response.AddHeader("content-disposition", "attachment; filename=YourFileName.xls");
        //    Response.ContentType = "application/excel";
        //    StringWriter sw = new StringWriter();
        //    HtmlTextWriter htw = new HtmlTextWriter(sw);
        //    grid.RenderControl(htw);
        //    Session.Remove("DataToExport");
        //    Response.Write(sw.ToString());
        //    Response.End();
        //}

        //public ContentResult GetReportStateAciklama(string key)
        //{
        //    return Content(GetEnumDescription(typeof(EnumRaporState), key));
        //}

        //public ContentResult GetEvetHayir(string key)
        //{
        //    bool ky = Convert.ToBoolean(key);
        //    if (ky)
        //        return Content("Evet");
        //    else
        //        return Content("Hayır");

        //    //return Content(GetEnumDescription(typeof(EnumEvetHayir), key));
        //}

        //public ContentResult GetIcraKalemKodu(string ThsKalemKodu)
        //{
        //    string result = string.Empty;
        //    switch (ThsKalemKodu)
        //    {
        //        case "1":
        //            result = "ENERJİ BEDELİ";
        //            break;
        //        case "2":
        //            result = "KDV";
        //            break;
        //        case "3":
        //            result = "FAİZ";
        //            break;
        //    }

        //    return Content(result);
        //}

        //public ContentResult GetAnaAlt(string key)
        //{
        //    string result = string.Empty;
        //    switch (key)
        //    {
        //        case "1":
        //            result = "Ana giriş";
        //            break;
        //        case "2":
        //            result = "Alt giriş";
        //            break;
        //        default:
        //            result = "Tanımsız";
        //            break;
        //    }

        //    return Content(result);
        //}

        //public ContentResult GetProcessedAciklama(string key)
        //{
        //    return Content(GetEnumDescription(typeof(EnumOsosJobProcessed), key));
        //}

        //public ContentResult GetAboneOzet(string key)
        //{
        //    Abone abn = SubscriberServiceProxy.GetSubscriberRow(new Guid(key));
        //    if (abn == null)
        //        return Content("Bulunamadı");
        //    return Content(abn.IsletmeDotted + " - " + abn.AboneNo);
        //}
        //public ContentResult GetAboneSahisOzet(string key)
        //{
        //    AboneSahis abn = SubscriberServiceProxy.GetAboneSahisRow(new Guid(key));
        //    if (abn == null)
        //        return Content("Bulunamadı");
        //    return Content(abn.AdSoyad);
        //}

        //public ContentResult GetBatchJobType(string key)
        //{
        //    return Content(GetEnumDescription(typeof(EnumBatchJobTypes), key));
        //}
        //public ContentResult GetBatchJobProcessed(string key)
        //{
        //    return Content(GetEnumDescription(typeof(EnumBatchJobProcessed), key));
        //}


        ////Bu kısım sedaş için yazıldı orada şuan cache yapısı yok eklendiğin de değiştirilebilinir

        //public ContentResult GetBilgilendirmeTuruAciklama(string key)
        //{
        //    string result = string.Empty;
        //    if (!string.IsNullOrEmpty(key))
        //        result = CacheHelper.GetBilgilendirmeTuruAciklama(Convert.ToInt32(key));
        //    return Content(result);
        //}

        public JsonResult GetProjectTypes()
        {
            return Json(CacheHelper.GetProjectTypes(), JsonRequestBehavior.AllowGet);
        }
    }
}
